// // 定义响应类型
// interface ApiResponse {
//     code?: number;
//     success?: boolean;
//     message?: string;
//     data?: {
//         token?: string;
//         [key: string]: any;
//     };
//     token?: string;
//
//     [key: string]: any;
// }

// export const useUserStore = defineStore('user', () => {
//     const token = ref(getToken() || '');
//     const name = ref('');
//     const avatar = ref('');
//     const roles = ref<string[]>([]);
//
//     // 登录
//     async function login(userInfo: { username: string; password: string }) {
//         try {
//             const {username, password} = userInfo;
//             const response: any = await loginApi({username: username.trim(), password});
//
//             // 检查响应格式并提取token
//             let tokenValue = '';
//
//             if (response?.data?.token) {
//                 tokenValue = response.data.token;
//             } else if (response?.token) {
//                 tokenValue = response.token;
//             } else if (typeof response === 'string') {
//                 // 直接是token字符串的情况
//                 tokenValue = response;
//             } else if (response?.data && typeof response.data === 'string') {
//                 // data是字符串的情况，可能直接是token
//                 tokenValue = response.data;
//             }
//
//             if (!tokenValue) {
//                 console.warn("登录响应中未找到token:", response);
//                 return Promise.reject(new Error('登录成功但未获取到令牌'));
//             }
//
//             // 确保token格式一致
//             if (!tokenValue.startsWith('Bearer ') && !tokenValue.startsWith('JWT_')) {
//                 tokenValue = `JWT_${tokenValue}`;
//             }
//
//             // 先设置Pinia状态，保证同步
//             token.value = tokenValue;
//
//             // 再存储到localStorage
//             setToken(tokenValue);
//
//             // 验证token是否正确保存
//             const savedToken = getToken();
//             if (savedToken !== tokenValue) {
//                 console.error("Token保存验证失败，期望:", tokenValue, "实际:", savedToken);
//             }
//
//             return Promise.resolve(response);
//         } catch (error) {
//             console.error("登录失败:", error);
//             return Promise.reject(error);
//         }
//     }
//
//     // 获取用户信息
//     async function getInfo() {
//         try {
//             if (token.value) {
//                 const response: any = await getUserInfo();
//                 if (response?.data) {
//                     name.value = response.data.name || '';
//                     avatar.value = response.data.avatar || '';
//                     roles.value = response.data.roles || [];
//                 }
//                 return Promise.resolve({name: name.value, roles: roles.value, avatar: avatar.value});
//             } else {
//                 // 模拟获取用户信息（无token时）
//                 name.value = 'Admin';
//                 avatar.value = '';
//                 roles.value = ['admin'];
//                 return Promise.resolve({name: name.value, roles: roles.value, avatar: avatar.value});
//             }
//         } catch (error) {
//             return Promise.reject(error);
//         }
//     }
//
//     // 登出
//     async function logout() {
//         try {
//             if (token.value) {
//                 try {
//                     await logoutApi();
//                 } catch (error) {
//                     console.error("登出API调用失败，继续清除本地登录状态:", error);
//                 }
//             }
//
//             // 无论API是否成功，都重置本地状态
//             resetState();
//
//             return Promise.resolve();
//         } catch (error) {
//             console.error("登出过程发生错误:", error);
//             // 即使出错，仍然尝试清除本地状态
//             resetState();
//             return Promise.reject(error);
//         }
//     }
//
//     // 重置状态
//     function resetState() {
//         token.value = '';
//         name.value = '';
//         avatar.value = '';
//         roles.value = [];
//         // 确保从localStorage移除token
//         removeToken();
//     }
//
//     return {
//         token,
//         name,
//         avatar,
//         roles,
//         login,
//         getInfo,
//         logout,
//         resetState
//     };
// });